/**
 * 目标：基于 Web 服务，开发-省份列表数据接口
 * 步骤：
 *  1. 创建 Web 服务
 *  2. 使用 req.url 获取请求的资源路径，读取 json 文件数据返回
 *  3. 其他请求的路径，暂时返回不存在的提示
 *  4. 运行 Web 服务，用浏览器请求地址查看效果
 */

//1.创建 Web 服务
const http = require('http')
const fs = require('fs')
const qs = require('querystring')
const path = require('path')
const server = http.createServer()
//2.使用 req.url 获取请求的资源路径  读取json文件数据返回
server.on('request', (req, res) => {
    //req 请求对象 res 响应对象
    console.log('req.url', req.url)
    //判断请假路径是否为 '/api/province'
    if (req.url === '/api/province') {
        //读取文件
        const data = fs.readFileSync(path.join(__dirname, './data/province.json'))
        //设置响应头 json 格式 编码为 utf-8
        res.setHeader('content-type', 'application/json;charset=utf-8')
        //响应客户端
        res.end(data.toString())
    }
    //.startsWith 以什么字符串开头
    else if (req.url.startsWith('/api/city')) {
        //把url路径截为两部分
        const queryStr = req.url.split('?')[1]
        //把查询字符串转化为对象，需要导入模块const qs = require('querystring')
        const queryObjct = qs.parse(queryStr)
        //设置响应头 json 格式 编码为 utf-8
        res.setHeader('content-type', 'application/json;charset=utf-8')
        //---------------
        //读取文件，数据类型为 buffer
        const data = fs.readFileSync(path.join(__dirname, './data/city.json'))
        //把buffer转化为对象
        const cityObject = JSON.parse(data.toString())
        //获取对应省份的城市列表
        const cityList = cityObject[queryObjct.pname]
        //响应客户端  只能响应buffer 或JSON字符串
        res.end(JSON.stringify(cityList))
    }
    else {
        //资源不存在
        res.setHeader('content-type', 'text/html;charset=utf-8')
        res.end('<h1>资源不存在</h1>')
    }
})
//启用 web 服务 如果端口被占用 会报错 先停止之前的服务
server.listen(3000, () => {
    console.log('服务启动成功，端口号为：3000')
})